﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Recursos.Model;

namespace Recursos.View
{
    public partial class PeriodosViewModify : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var userSecurity = ((Usuario)Session["UserLogged"]);
            var permisos = new PermisosModel();
            if (userSecurity == null)
                Response.Redirect("~/NoAccess.aspx");
            if (!Page.IsPostBack && userSecurity != null && permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador"))
                BindData();

            else if (userSecurity == null || !permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador"))
            {
                Response.Redirect("~/NoAccess.aspx");
            }

        }

        public void BindData()
        {
            var periodo = new PeriodoModel();
            GridView1.DataSource = periodo.CargarPeriodo();
            GridView1.DataBind();

        }

        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            var t = e.Row.RowType;

            if (t == DataControlRowType.DataRow)
            {
                if (this.GridView1.EditIndex >= 0 && e.Row.RowIndex == this.GridView1.EditIndex)
                {
                    var d1 = e.Row.FindControl("DropdownModalidad") as DropDownList;
                    var em1 = e.Row.DataItem as TipoPeriodo;
                    var modalidad = new ModalidadModel();
                    d1.DataSource = modalidad.CargarModalidad();
                    d1.DataBind();
                    d1.SelectedValue = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();

                }
            }
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            BindData();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = GridView1.Rows[e.RowIndex];
            var periodomodelo = new PeriodoModel();
            var periodoId = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            var txtinicio = (TextBox)row.FindControl("TextBox1");
            var txtfinal = (TextBox)row.FindControl("TextBox2");
            string hinicio = txtinicio.Text;
            string hfinal=txtfinal.Text;
            var dplperiodo = (DropDownList)row.FindControl("DropDownListPeriodo");
            var dplmodalidad = (DropDownList)row.FindControl("DropDownModalidad");
            var txtaño = (TextBox)row.FindControl("año");
            var txtdiashabiles = (TextBox)row.FindControl("diashabiles");
            var c = new CultureInfo("es-Es");
            var fechainicio = Convert.ToDateTime(hinicio, c);
            var fechafinal = Convert.ToDateTime(hfinal, c);
            if (fechainicio > fechafinal)
            {
                WebMsgBox.Show("El periodo " + dplperiodo.SelectedValue + " " + dplmodalidad.SelectedItem.Text.ToString() + " " + txtaño.Text + " cuenta con fechas inválidas. No se realizo la actualización", "Modificación de Periodos");
                return;
            }
            GridView1.EditIndex = -1;
            BindData();
            
           
            var conflicto=periodomodelo.ActualizarPeriodo(periodoId,int.Parse(txtaño.Text),fechainicio,fechafinal,int.Parse(txtdiashabiles.Text),int.Parse(dplperiodo.SelectedValue),int.Parse(dplmodalidad.SelectedValue));
            if(conflicto==false) 
            {
                WebMsgBox.Show("Periodo "+ dplperiodo.SelectedValue+" "+dplmodalidad.SelectedItem.Text.ToString()+" "+txtaño.Text+" " +" editado correctamente", "Modificación de Periodos");
               
            }
            else
                WebMsgBox.Show("El periodo "+ dplperiodo.SelectedValue+" "+dplmodalidad.SelectedItem.Text.ToString()+" "+txtaño.Text+ " esta duplicado. No se realizo la actualización", "Modificación de Periodos");
            GridView1.EditIndex = -1;
            BindData();
                
           
        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            e.Cancel = true;
            GridView1.EditIndex = -1;
            BindData();
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {


            GridViewRow row = GridView1.Rows[e.RowIndex];
     
            var periodoId = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            var periodo = new PeriodoModel();
            var periodoaliminar = periodo.CargarPorId(periodoId);
            var conflicto = periodo.EliminarPeriodo(periodoId);
            var dplperiodo = (DropDownList)row.FindControl("DropDownListPeriodo");
            var dplmodalidad = (DropDownList)row.FindControl("DropDownModalidad");
            var txtaño = (TextBox)row.FindControl("año");
            BindData();
            if (conflicto == false)
                WebMsgBox.Show("Periodo "  + periodoaliminar.NumeroPeriodo + " " + periodoaliminar.TipoPeriodo.Nombre + " " + periodoaliminar.Año +" eliminado correctamente", "Eliminar Periodo");
            else
                WebMsgBox.Show("El periodo " + periodoaliminar.NumeroPeriodo + " " + periodoaliminar.TipoPeriodo.Nombre + " " + periodoaliminar.Año + " cuenta con reservaciones. No se realizo la eliminación", "Eliminar Periodo");
            
            BindData();
        }
    }
}